1. Technical Field
The present invention relates in general to clustered data processing systems and in particular to clustered data processing systems with cluster-aware virtual input/output servers (VIOSes). Still more particularly, the present invention relates to propagation of virtual I/O functionality within a clustered data processing system.
2. Description of the Related Art
Virtualized data processing system configuration, which provides the virtualization of processor, memory and Operating System (OS) resources are becoming more and more common in the computer (and particularly the computer server) industry. To a lesser extent, storage virtualization is also known and provided in limited environments. However, within the virtualization computing environment, storage virtualization and management is implemented as a separate virtualization model from server virtualization and management. Thus, different client logical partitions (LPARs) associated with different virtualized server systems may access the same storage access network (SAN) storage. However, the client LPARs on one server do not have any “knowledge” of whether the SAN disk that the client LPAR is trying to access is being used by some other client LPAR belonging to the same server or another server. The conventional implementation of distributed server systems providing storage virtualization within shared SAN storage can cause data integrity issues and may potentially cause data corruption and client partition crashes.
Additionally, for systems that employ virtual input/output (I/O), or VIO, by which one or more virtual client partitions utilizes I/O resources of a VIO server (VIOS) on the virtualized server, execution of such VIO operations requires the assigned VIOS to be functional. However, a VIOS may occasionally fail or loose access to the physical fabric. The client partition thus looses its I/O connectivity to the storage resource (e.g., SAN), and all virtual resources exported to or from the virtual client partition will result in I/O failures or operating system crashes.